package com.eisula.sc.database;

import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import org.hibernate.annotations.Proxy;

@Entity
@Table(name = "t_hogar")
@Proxy(lazy = false)
public class Hogar {

	private int id;
	private int numeroPersonas;
	private int numeroCuartos;
	private int numeroBanos;
	private boolean jefeTienePareja;
	private boolean dormitorioTresOMas;
	private int numeroComidas;
	private String utilizaMercal;
	private String utilizaPdval;
	private String beneficioMercado;
	private String miembroParticipaOrganizacionComunitaria;
	private String principalProblemaComunidad;
	private String vigilanciaPolicial;

	private Vivienda viviendaId;
	private List<Vehiculo> vehiculoList;
	private List<Electrodomestico> electrodomesticoList;
	private List<DelitoHogar> delitoHogarList;
	private List<HogarCasosViolencia> hogarCasosViolenciasList;
	private List<Persona> personaList;

	// --------------------------------------------------------------------------------

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	// --------------------------------------------------------------------------------

	public int getNumeroPersonas() {
		return numeroPersonas;
	}

	public void setNumeroPersonas(int numeroPersonas) {
		this.numeroPersonas = numeroPersonas;
	}

	// --------------------------------------------------------------------------------

	public int getNumeroCuartos() {
		return numeroCuartos;
	}

	public void setNumeroCuartos(int numeroCuartos) {
		this.numeroCuartos = numeroCuartos;
	}

	// --------------------------------------------------------------------------------

	public int getNumeroBanos() {
		return numeroBanos;
	}

	public void setNumeroBanos(int numeroBanos) {
		this.numeroBanos = numeroBanos;
	}

	// --------------------------------------------------------------------------------

	public boolean isJefeTienePareja() {
		return jefeTienePareja;
	}

	public void setJefeTienePareja(boolean jefeTienePareja) {
		this.jefeTienePareja = jefeTienePareja;
	}

	// --------------------------------------------------------------------------------

	public boolean isDormitorioTresOMas() {
		return dormitorioTresOMas;
	}

	public void setDormitorioTresOMas(boolean dormitorioTresOMas) {
		this.dormitorioTresOMas = dormitorioTresOMas;
	}

	// --------------------------------------------------------------------------------

	public int getNumeroComidas() {
		return numeroComidas;
	}

	public void setNumeroComidas(int numeroComidas) {
		this.numeroComidas = numeroComidas;
	}

	// --------------------------------------------------------------------------------

	public String getUtilizaMercal() {
		return utilizaMercal;
	}

	public void setUtilizaMercal(String utilizaMercal) {
		this.utilizaMercal = utilizaMercal;
	}

	// --------------------------------------------------------------------------------

	public String getUtilizaPdval() {
		return utilizaPdval;
	}

	public void setUtilizaPdval(String utilizaPdval) {
		this.utilizaPdval = utilizaPdval;
	}

	// --------------------------------------------------------------------------------

	public String getBeneficioMercado() {
		return beneficioMercado;
	}

	public void setBeneficioMercado(String beneficioMercado) {
		this.beneficioMercado = beneficioMercado;
	}

	// --------------------------------------------------------------------------------

	public String getMiembroParticipaOrganizacionComunitaria() {
		return miembroParticipaOrganizacionComunitaria;
	}

	public void setMiembroParticipaOrganizacionComunitaria(
			String miembroParticipaOrganizacionComunitaria) {
		this.miembroParticipaOrganizacionComunitaria = miembroParticipaOrganizacionComunitaria;
	}

	// --------------------------------------------------------------------------------

	public String getPrincipalProblemaComunidad() {
		return principalProblemaComunidad;
	}

	public void setPrincipalProblemaComunidad(String principalProblemaComunidad) {
		this.principalProblemaComunidad = principalProblemaComunidad;
	}

	// --------------------------------------------------------------------------------

	public String getVigilanciaPolicial() {
		return vigilanciaPolicial;
	}

	public void setVigilanciaPolicial(String vigilanciaPolicial) {
		this.vigilanciaPolicial = vigilanciaPolicial;
	}

	// --------------------------------------------------------------------------------

	@ManyToOne
	public Vivienda getViviendaId() {
		return viviendaId;
	}

	public void setViviendaId(Vivienda viviendaId) {
		this.viviendaId = viviendaId;
	}

	// --------------------------------------------------------------------------------

	@OneToMany(mappedBy = "hogarId", orphanRemoval = true)
	@LazyCollection(LazyCollectionOption.TRUE)
	public List<Vehiculo> getVehiculoList() {
		return vehiculoList;
	}

	public void setVehiculoList(List<Vehiculo> vehiculoList) {
		this.vehiculoList = vehiculoList;
	}

	// --------------------------------------------------------------------------------

	@OneToMany(mappedBy = "hogarId", orphanRemoval = true)
	@LazyCollection(LazyCollectionOption.TRUE)
	public List<Electrodomestico> getElectrodomesticoList() {
		return electrodomesticoList;
	}

	public void setElectrodomesticoList(List<Electrodomestico> electrodomesticoList) {
		this.electrodomesticoList = electrodomesticoList;
	}

	// --------------------------------------------------------------------------------

	@OneToMany(mappedBy = "hogarId", orphanRemoval = true)
	@LazyCollection(LazyCollectionOption.TRUE)
	public List<DelitoHogar> getDelitoHogarList() {
		return delitoHogarList;
	}

	public void setDelitoHogarList(List<DelitoHogar> delitoHogarList) {
		this.delitoHogarList = delitoHogarList;
	}

	// --------------------------------------------------------------------------------

	@OneToMany(mappedBy = "hogarId", orphanRemoval = true)
	@LazyCollection(LazyCollectionOption.TRUE)
	public List<HogarCasosViolencia> getHogarCasosViolenciasList() {
		return hogarCasosViolenciasList;
	}

	public void setHogarCasosViolenciasList(List<HogarCasosViolencia> hogarCasosViolenciasList) {
		this.hogarCasosViolenciasList = hogarCasosViolenciasList;
	}

	// --------------------------------------------------------------------------------

	@OneToMany(mappedBy = "hogarId", orphanRemoval = true)
	@LazyCollection(LazyCollectionOption.TRUE)
	public List<Persona> getPersonaList() {
		return personaList;
	}

	public void setPersonaList(List<Persona> personaList) {
		this.personaList = personaList;
	}

	// --------------------------------------------------------------------------------

}
